package com.hancai.util;

import org.springframework.util.ObjectUtils;

import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * @author 涵菜
 * @version 1.0
 * redis缓存工具类
 */
public class CacheUtils {
    /**设计模式
     * @param cacheSelector 从缓存中查询
     * @param databaseSelector 从数据库中查询
     * @param cacheSave  消费者-把数据库中查询出的数据保存到缓存中
     * @return
     * @param <T>
     */
    public static <T> T getCacheData(Supplier<T> cacheSelector, Supplier<T>databaseSelector, Consumer<T>cacheSave){
        T data=cacheSelector.get();
        if(ObjectUtils.isEmpty(data)){
            //缓存中是空的就从数据库中查询
            data=databaseSelector.get();
            if(!ObjectUtils.isEmpty(data)){
                //把数据放入redis
              cacheSave.accept(data);
            }
        }
        return data;
    }
}
